<?php

namespace Biblibase\SiteBundle\Validator;
 
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;

use Doctrine\ORM\EntityManager;
 
class ClassementNumValidator extends ConstraintValidator
{
	
  private $em;
  
  public function __construct(EntityManager $em)
  {
		$this->em = $em;
  }
  
  public function validate($livre, Constraint $constraint)
  {
    if($livre->getClassement())
			{
				if(!$livre->getNum())
				{
					$this->context->addViolationAt('num', 'Vous avez choisi un classement sans renseigner de num', array(), null);				
				}	
				else 
				{
					$livreRep = $this->em->getRepository('BiblibaseSiteBundle:Livre');
					$livres = $livreRep->findBy(array('classement' => $livre->getClassement()));
					foreach($livres as $livre2)
					{
							if($livre2->getNum() == $livre->getNum() && $livre2 != $livre)
							{
								$this->context->addViolationAt('num', 'Ce num existe déjà', array(), null);
								return;
							}
					}
				}		
			}
		
			if($livre->getNum())
			{
				if(!$livre->getClassement())
				{
					$this->context->addViolationAt('classement', 'Vous avez entré un num sans renseigner de classement', array(), null);				
				}			
			}
  }
}